<?php

  /**
   * UserRecord
   *
   * Базовый класс ORM для таблиц, записи в которых созданы пользователями
   *
   * @property      int  $user_id идентификатор пользователя
   * @property-read User $user    пользователь
   */

  abstract class UserRecord extends Record
  {
    /**
     * правила проверки атрибутов модели
     *
     * @return array[]
     * @access public
     */
    public function rules()
    {
      return array(
        array("user_id", "exist", "className" => "User", "attributeName" => "id", "on" => "insert"),
        array("user_id", "exist", "className" => "User", "attributeName" => "id", "allowEmpty" => false, "on" => "update")
      ) + parent::rules();
    }

    /**
     * связи с другими таблицами
     *
     * @return array[]
     * @access public
     */
    public function relations()
    {
      return array("user" => array(self::BELONGS_TO, "User", "user_id")) + parent::relations();
    }

    /**
     * действия перед сохранением
     *
     * @return bool
     * @access protected
     */
    protected function beforeSave()
    {
      if ($success = parent::beforeSave())
        if ($this->isNewRecord)
          $success = !!($this->user_id = $this->app->user->id);

      return $success;
    }
  }

?>
